%% 图像处理
close all; clc; clear;
img = imread("zyx.jpg");% 读取图像
CallFunction_img = histeq(img);% 使用histeq函数进行直方图均衡化 - 函数调用

% 显示原图与均衡化后的图像
subplot(2, 3, 1); imshow(img); title('原始图像');
subplot(2, 3, 4); imhist(img),title('函数调用直方图');
subplot(2, 3, 2); imshow(CallFunction_img); title('函数调用均衡化图像');
subplot(2, 3, 5); imhist(CallFunction_img),title('函数调用均衡化直方图');

%% 直方图均衡化
img = imread("zyx.jpg");% 读取图像
histogramCounts = imhist(img, 256);% 计算直方图

% 计算累积分布函数 (CDF)
cumulativeSum = cumsum(histogramCounts);
numPixels = numel(img); %计算有多少个像素
cdf = cumulativeSum / numPixels;

[row, col] = size(img);
equalizedImg = zeros(size(img)); % 初始化均衡化后的图像数组
for r = 1:row
    for c = 1:col
        % 对每个像素值应用插值查找
        equalizedImg(r, c) = interp1(0:255, cdf, double(img(r, c)), 'linear', 'extrap');
    end
end
%%
subplot(2, 3, 3); imshow(equalizedImg),title('编程均衡化图像'); % 显示均衡化后的图像
subplot(2, 3, 6); imhist(equalizedImg),title('编程均衡化直方图');